package nsu.edu.zsq.service.sys;

import java.util.List;

import com.github.pagehelper.PageInfo;

import nsu.edu.zsq.bean.StuScore;
import nsu.edu.zsq.bean.Student;
import nsu.edu.zsq.param.PageQuery;
import nsu.edu.zsq.param.StuScoreParam;

/** 
* Description: 学生成绩管理的service类<br>
*/
public interface StuScoreService {
    
    /**
     * 获取一条学生课程成绩信息
     * @param id 学生课程成绩id
     * @return StuScore
     */
    public StuScore getStuScore(int id);

    /**
     * 获取该班级下的所有学生
     * @param classId 班级id
     * @param pageQuery 分页信息
     * @return List<Student>
     */
    public PageInfo<Student> listStudent(int classId, PageQuery pageQuery);

    /**
     * 获取该班级所有需要补考的学生信息
     * 获取该学生所有的课程成绩
     * @param stuId 学生id
     * @return List<StuScoreParam>
     */
    public List<StuScoreParam> listStuScore(int stuId);

    /**
     * 保存/编辑一条学生课程成绩信息
     * @param stuScore 学生课程成绩信息
     */
    public void saveStuScore(StuScore stuScore);

    /**
     * @param classId 班级id
     * @param pageQuery 分页信息
     * @return PageInfo<Student>
     */
    public PageInfo<Student> listResitStudent(int classId, PageQuery pageQuery);

    /**
     * 获取该学生的所有补考课程成绩信息
     * @param stuNo 学号
     * @return List<StuScoreParam>
     */
    public List<StuScore> listStuResitScore(String stuNo);

    /**
     * 保存/编辑一条学生补考成绩
     * @param stuScore 学生课程成绩信息
     */
    public void saveStuResitScore(StuScore stuScore);

    /**
     * 获取该班级中需要重修的学生信息
     * @param classId 班级id
     * @param pageQuery 分页信息
     * @return PageInfo<Student>
     */
    public PageInfo<Student> listRetakeStudent(int classId, PageQuery pageQuery);

    /**
     * 获取该学生的所有重修课程成绩信息
     * @param stuNo 学号
     * @return List<StuScore>
     */
    public List<StuScore> listStuRetakeScore(String stuNo);

    /**
     * 保存/编辑一条学生重修成绩
     * @param stuScore 学生课程成绩信息
     */
    public void saveStuRetakeScore(StuScore stuScore);
}
